import Cookies from 'js-cookie'

const TokenKey = 'vue_admin_template_token'

export function getToken() {
    return Cookies.get(TokenKey)
}

export function setToken(token) {
    return Cookies.set(TokenKey, token)
}

export function removeToken() {
    return Cookies.remove(TokenKey)
}

// 一维数据转化为树形结构的函数
export function transListToTreeData(list, rootValue) { // 传入数组，起始id
    // 1. 得到一个对象： {pid值: [子数据1, 子数据2]}
    // {
    //     0: [{ id: 1, name: '总裁办', pid: 0 }, { id: 2, name: 'IT部', pid: 0 }],
    //     1: [{ id: 11, name: '秘书处', pid: 1 }]
    // }
    let map = {} // 得到一个map对象
    list.forEach(item => {
        // 按照 pid 组织数据分类
        if (map[item.pid]) { // 探查，map里有没有这个键
            // 能进入到map里，说明，存在相同键值
            map[item.pid].push(item)
        } else {
            // 没有，说明是第一次
            map[item.pid] = [item]
        }
    })

    // 2. 对原数组进行修改, 有孩子就加children属性，没有孩子就不用加
    //    遍历处理数组中的每一个元素
    //    去上面的对象中找当前遍历到的元素的id属性值对应的属性，作为当前元素的children属性
    // [
    //     { id: 1, name: '总裁办', pid: 0, children: [{ id: 11, name: '秘书处', pid: 1 }] },
    //     { id: 11, name: '秘书处', pid: 1 },
    //     { id: 2, name: 'IT部', pid: 0 }
    // ]
    // 重构list数据的数据结构，值就要从map中得到
    list.forEach(item => {
        if (map[item.id]) { // 如果能够在map中找到对应的键，说明存在层级
            item['children'] = map[item.id]
        }
    })

    // 3. 对原数组进行过滤，保留pid===rootValue的元素，返回
    // [
    //     { id: 1, name: '总裁办', pid: 0, children: [{ id: 11, name: '秘书处', pid: 1 }] },
    //     { id: 2, name: 'IT部', pid: 0 }
    // ]
    return list.filter(item => item.pid === rootValue)
}
